/**
 * 微信浏览器适配工具
 * 用于检测和处理微信浏览器的特殊行为
 */

/**
 * 检测是否在微信浏览器中
 */
export const isWechat = (): boolean => {
  const ua = navigator.userAgent.toLowerCase()
  return /micromessenger/.test(ua)
}

/**
 * 检测是否在微信小程序webview中
 */
export const isWechatMiniProgram = (): boolean => {
  const ua = navigator.userAgent.toLowerCase()
  return /miniprogram/.test(ua)
}

/**
 * 获取微信浏览器版本
 */
export const getWechatVersion = (): string | null => {
  const ua = navigator.userAgent.toLowerCase()
  const match = ua.match(/micromessenger\/([\d.]+)/)
  return match ? match[1] : null
}

/**
 * 初始化微信浏览器适配
 */
export const initWechatAdapter = () => {
  if (!isWechat()) return

  // 1. 禁用微信浏览器的字体调整（同步执行）
  if (document.documentElement) {
    document.documentElement.style.webkitTextSizeAdjust = '100%'
    document.documentElement.style.textSizeAdjust = '100%'
  }

  // 2. 修复微信浏览器的视口高度问题（同步执行）
  const setViewportHeight = () => {
    const vh = window.innerHeight * 0.01
    document.documentElement.style.setProperty('--vh', `${vh}px`)
  }

  setViewportHeight()
  window.addEventListener('resize', setViewportHeight, { passive: true })
  window.addEventListener('orientationchange', setViewportHeight, { passive: true })

  // 3. 延迟执行非关键初始化，避免阻塞页面加载
  requestIdleCallback(() => {
    // 修复iOS微信浏览器输入框问题 - 使用事件委托
    if (isIOS()) {
      document.addEventListener('focus', (e) => {
        const target = e.target as HTMLElement
        if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA') {
          setTimeout(() => {
            target.scrollIntoView({
              behavior: 'smooth',
              block: 'center',
            })
          }, 100)
        }
      }, true)

      document.addEventListener('blur', (e) => {
        const target = e.target as HTMLElement
        if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA') {
          setTimeout(() => window.scrollTo(0, 0), 0)
        }
      }, true)
    }
  })
}

/**
 * 检测是否为iOS设备
 */
export const isIOS = (): boolean => {
  const ua = navigator.userAgent.toLowerCase()
  return /iphone|ipad|ipod/.test(ua)
}

/**
 * 检测是否为Android设备
 */
export const isAndroid = (): boolean => {
  const ua = navigator.userAgent.toLowerCase()
  return /android/.test(ua)
}

/**
 * 分享到微信配置（需要微信JS-SDK）
 */
export const configWechatShare = (config: {
  title: string
  desc: string
  link: string
  imgUrl: string
}) => {
  if (!isWechat()) {
    console.warn('当前不在微信浏览器中，无法配置分享')
    return
  }

  // 注意：实际使用需要引入微信JS-SDK并进行签名验证
  console.log('📤 微信分享配置:', config)

  // TODO: 集成微信JS-SDK
  // wx.ready(() => {
  //   wx.onMenuShareTimeline(config)
  //   wx.onMenuShareAppMessage(config)
  // })
}

/**
 * 获取浏览器环境信息
 */
export const getBrowserInfo = () => {
  const ua = navigator.userAgent.toLowerCase()

  return {
    isWechat: isWechat(),
    isWechatMiniProgram: isWechatMiniProgram(),
    wechatVersion: getWechatVersion(),
    isIOS: isIOS(),
    isAndroid: isAndroid(),
    screenWidth: window.screen.width,
    screenHeight: window.screen.height,
    devicePixelRatio: window.devicePixelRatio,
    userAgent: ua,
  }
}

/**
 * 打印浏览器信息（调试用）
 */
export const logBrowserInfo = () => {
  const info = getBrowserInfo()
  console.group('📱 浏览器环境信息')
  console.table(info)
  console.groupEnd()
}
